﻿using System.ServiceModel;
using System.ServiceModel.Web;
using Itau.IM.Carimbador.Contract;

namespace Itau.IM.Carimbador.Interface
{
    /// <summary>
    /// Interface do serviço TransferPrice
    /// </summary>
    [ServiceContract]
    public interface ITransferPrice
    {
        /// <summary>
        /// Método responsável pela obtenção de pontos de uma curva regular, sem prazo específico
        /// </summary>
        /// <param name="request_">Requisição</param>
        /// <returns>Resposta</returns>
        [OperationContract]
        ConsultarRegularSemPrazoResponse ConsultarRegularSemPrazo(ConsultarRegularSemPrazoRequest request_);

        /// <summary>
        /// Método responsável pela obtenção um único pontos de uma curva regular, com prazo específico
        /// </summary>
        /// <param name="request_">Requisição</param>
        /// <returns>Resposta</returns>
        [OperationContract]
        ConsultarRegularComPrazoResponse ConsultarRegularComPrazo(ConsultarRegularComPrazoRequest request_);

        /// <summary>
        /// Método responsável pela obtenção de pontos de uma curva irregular
        /// </summary>
        /// <param name="request_">Requisição</param>
        /// <returns>Resposta</returns>
        [OperationContract]
        ConsultarIrregularResponse ConsultarIrregular(ConsultarIrregularRequest request_);


        /// <summary>
        /// Método responsável pela consulta da taxa de custo, atraves da chamada unificada.
        /// </summary>
        /// <param name="request_">Requisição</param>
        /// <returns>Resposta</returns>
        [OperationContract]
        ConsultarTaxaTransferPriceResponse ConsultarTaxaTransferPrice(ConsultarTaxaTransferPriceRequest request_);


        /// <summary>
        /// Método responsável pela obtenção de pontos de uma curva regular, sem prazo específico
        /// </summary>
        /// <param name="request_">Requisição</param>
        /// <returns>Resposta</returns>
        /// <example>
        ///     http://localhost:1419/TransferPriceService.svc/get/RegularSemPrazo?request=<ConsultarRegularSemPrazoRequest><CodigoProdutoFinanceiroDerivado>99999999</CodigoProdutoFinanceiroDerivado><DataHoraOperacao>2010-01-04T00:00:00</DataHoraOperacao><NomeUsuario>TESTE</NomeUsuario><FlagRecarimbo>1</FlagRecarimbo><Parametros><ParametroEO><Nome>1</Nome><Valor>0000</Valor></ParametroEO><ParametroEO><Nome>2</Nome><Valor>0790</Valor></ParametroEO><ParametroEO><Nome>3</Nome><Valor>1</Valor></ParametroEO><ParametroEO><Nome>4</Nome><Valor>0</Valor></ParametroEO><ParametroEO><Nome>5</Nome><Valor>00</Valor></ParametroEO><ParametroEO><Nome>6</Nome><Valor>3</Valor></ParametroEO><ParametroEO><Nome>7</Nome><Valor>0</Valor></ParametroEO><ParametroEO><Nome>8</Nome><Valor>0</Valor></ParametroEO><ParametroEO><Nome>9</Nome><Valor>000000000081744</Valor></ParametroEO></Parametros></ConsultarRegularSemPrazoRequest>
        /// </example>
        [OperationContract]
        [WebGet(UriTemplate = "/RegularSemPrazo?request={request_}")]
        ConsultarRegularSemPrazoResponse ConsultarRegularSemPrazoGet(string request_);

        /// <summary>
        /// Método responsável pela obtenção um único pontos de uma curva regular, com prazo específico
        /// </summary>
        /// <param name="request_">Requisição</param>
        /// <returns>Resposta</returns>
        /// <example>
        ///     http://localhost:1419/TransferPriceService.svc/get/RegularComPrazo?request=<ConsultarRegularComPrazoRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><CodigoProdutoFinanceiroDerivado>99999999</CodigoProdutoFinanceiroDerivado><DataHoraOperacao>2010-01-04T00:00:00</DataHoraOperacao><NomeUsuario>TESTE</NomeUsuario><FlagRecarimbo>1</FlagRecarimbo><Parametros><ParametroEO><Nome>INDEXAD002</Nome><Valor>0000</Valor></ParametroEO><ParametroEO><Nome>MOEDA003</Nome><Valor>790</Valor></ParametroEO><ParametroEO><Nome>TIPOFLU004</Nome><Valor>1</Valor></ParametroEO><ParametroEO><Nome>CLASCON005</Nome><Valor>0</Valor></ParametroEO><ParametroEO><Nome>DIRETOR017 </Nome><Valor>00</Valor></ParametroEO><ParametroEO><Nome>SEGMENT007</Nome><Valor>0</Valor></ParametroEO><ParametroEO><Nome>OPCILIQ006</Nome><Valor>0</Valor></ParametroEO><ParametroEO><Nome>STATUS016</Nome><Valor>0</Valor></ParametroEO><ParametroEO><Nome>VALOR012</Nome><Valor>50</Valor></ParametroEO></Parametros><PrazoVencimento>2010-02-07T00:00:00</PrazoVencimento></ConsultarRegularComPrazoRequest>
        /// </example>
        [OperationContract]
        [WebGet(UriTemplate = "/RegularComPrazo?request={request_}")]
        ConsultarRegularComPrazoResponse ConsultarRegularComPrazoGet(string request_);


        /// <summary>
        /// /// Método responsável pela consulta da taxa de custo, atraves da chamada unificada.
        /// </summary>
        /// <param name="request_">Requisição</param>
        /// <returns>Resposta</returns>
        /// <example>
        ///     http://localhost:1419/TransferPriceService.svc/get/ConsultarTaxaTrasferPricet?request=<ConsultarTaxaTrasferPriceRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><CodigoProdutoFinanceiroDerivado>99999999</CodigoProdutoFinanceiroDerivado><DataHoraOperacao>2010-01-04T00:00:00</DataHoraOperacao><NomeUsuario>TESTE</NomeUsuario><FlagRecarimbo>1</FlagRecarimbo><Parametros><ParametroEO><Nome>INDEXAD002</Nome><Valor>0000</Valor></ParametroEO><ParametroEO><Nome>MOEDA003</Nome><Valor>790</Valor></ParametroEO><ParametroEO><Nome>TIPOFLU004</Nome><Valor>1</Valor></ParametroEO><ParametroEO><Nome>CLASCON005</Nome><Valor>0</Valor></ParametroEO><ParametroEO><Nome>DIRETOR017 </Nome><Valor>00</Valor></ParametroEO><ParametroEO><Nome>SEGMENT007</Nome><Valor>0</Valor></ParametroEO><ParametroEO><Nome>OPCILIQ006</Nome><Valor>0</Valor></ParametroEO><ParametroEO><Nome>STATUS016</Nome><Valor>0</Valor></ParametroEO><ParametroEO><Nome>VALOR012</Nome><Valor>50</Valor></ParametroEO></Parametros><PrazoVencimento>2010-02-07T00:00:00</PrazoVencimento></ConsultarTaxaTrasferPriceRequest>
        /// </example>
        [OperationContract]
        [WebGet(UriTemplate = "/ConsultarTaxaTrasferPrice?request={request_}")]
        ConsultarTaxaTransferPriceResponse ConsultarTaxaTransferPriceGet(string request_);
    }
}